23

» WarCraft 3 / Работает ли GetItemTypeId

Похожие вопросы:

ответ
Такое может произойти если функция не объявлена публичной
public function StatsSyncAll(unit owner)
    // Ра-та-та-та-та
По умолчанию, объявления внутри пакета приватные.
P.S. в Wurst лучше придерживаться стиля Wurst. То бишь, имена функций и переменных следует начинать с маленькой буквы
public function  statsSyncAll(unit owner)

23

» WarCraft 3 / Таймер вместо вейта

Похожие вопросы:

ответ
Юзать структуры, свои собственные системы хранения данных.
Если вы только решили слезть с гуи+ вейты на jass, то вам рано думать о таком.
Таймер + хештаблицы в помощь, в статьях есть много информации на эту тему.
Что вам еще непонятно?
ImbaStyle, что есть TriggerSleepActions и timer вам известно?
ответ
Нельзя просто использовать таймер вместо вейта посередине триггера (гуишный вейт именно так и работает - запускает таймер и проверяет циклом каждые 0.1 сек пока он не пройдет).
Но если так уж нужно узнать истек ли таймер:
Real comparison - Обратный отсчет - Remaining time for timer (оставшееся время таймера)

23

» WarCraft 3 / Контратака

Похожие вопросы:

ответ
Без Футболочки:
Уже давно забыл что такое варкрафт и как выглядят тригерры но попробую объяснить по кривому)
Через событие юнит атакован выставляй шанс на то что даммик бафнет героя дамми бафом который даёт лайф стил и атак спид...
Как-то так)
Более подробно и правильно объяснить не смогу т.к ничерта не помню)
ответ
Неуязвимость проверяют через даммика с атакой, через приказ, сможет ли атаковать или нет, просто проверка выполнения приказа. Так же пытаются нанести урон и смотрят сколько он отнял здоровья, так можно и определить неуязвимость и вычислить резист юнита к конкретному типу урона.

23

» WarCraft 3 / Отлов точки приказа постройки

Похожие вопросы:

ответ
Можно дать юниту какую-нить абилку и все время через Force UI Key заставлять игрока ее нажимать пока этот юнит выбран
И как только он эту абилку использует, значит меню закрыто
ответ
Так ведь в редакторе объектов есть строчка "Пути - требование к расположению". Там можно просто поставить галочку "Неиспорченный" и построить это здание на порченной земле будет уже нельзя.

23

» WarCraft 3 / Строка и переменная тип юнита

Похожие вопросы:

ответ
Эмм что за ерунда, сократил код, убрав всё лишнее, но утечки все равно остаются, по 1.5 - 2 хэндла за каждое нанесение урона (тип хэндла не знаю как посмотреть). Когда триггер отключаешь, то всё нормально.
Сокращенный код
function SDMSCreateTextTag takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local unit s=GetEventDamageSource()
    local integer i=GetConvertedPlayerId(GetOwningPlayer(u))
    local texttag tt=CreateTextTag()
    local real dmg=GetEventDamage()

    if ( dmg > 1.00 ) and ( dmg < 9999.00 ) then
        if GetPlayerId(GetOwningPlayer(u))==12 then
            call SetTextTagText(tt, "|cff9db9eb-"+I2S(R2I(dmg))+"|r", 0.023)
        else
            call SetTextTagText(tt, "|cffffa500-"+I2S(R2I(dmg))+"|r", 0.023)
        endif
        call SetTextTagPosUnit(tt, u, 0)
        call SetTextTagColor(tt, 255, 255, 255, 255) 
        call SetTextTagVelocity(tt, 0.05325*Cos(90 * bj_DEGTORAD), 0.05325*Sin(90 * bj_DEGTORAD))
        call SetTextTagPermanent(tt, false)
        call SetTextTagLifespan(tt, 1.0)
        call SetTextTagFadepoint(tt, 0.0)
    endif
    call PolledWait(2.0)

    call DestroyTextTag(tt)
    set u=null
    set s=null
    set i=0
    set dmg=0
    set tt=null
endfunction

function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing
    call TriggerRegisterUnitEvent(udg_SDMStrigger,GetEnteringUnit(),EVENT_UNIT_DAMAGED)
endfunction

function theSDMSTriggerActions takes nothing returns nothing
    local trigger UnitEnter=CreateTrigger()

    call TriggerRegisterEnterRectSimple(UnitEnter, gg_rct_Arena)
    call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)

    set UnitEnter=null
endfunction

function InitTrig_the_SDMS_Trigger takes nothing returns nothing
    local trigger tr=CreateTrigger()

    set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер.
    call TriggerAddAction(udg_SDMStrigger,function SDMSCreateTextTag)
    call TriggerRegisterTimerEventSingle(tr,0.0)
    call TriggerAddAction(tr,function theSDMSTriggerActions)

    set tr=null
endfunction
Wait вызывает утечки ((
Пришлось делать через таймер
ответ
сделать базу даных по названию...
строка[1] = "пехотинец"
строка[2] = "паладин"
тип юнита[1] = пехотинец
тип юнита[2] = паладин
цыкл
если введенная строка == строка[А]
создать юнита тип юнита[А]
ответ
МодификаторПал я так понимаю число, а не юнит...
local unit u
local real r
Это конкретно по ошибке... а вообще - не надо смотреть видео от этого человека, он тебя плохому научит... правда. А другим потом придётся тебя переучивать, если ты сам это дело не забросишь

23

» WarCraft 3 / Команда для игрока

Похожие вопросы:

ответ
По ходу не можно...
ответ
зрители и обсы не взаимодействуют ни с какими триггерами, они вне игры
ответ
один триггер
по одному событию на каждого игрока
в действе передавать "Переключающий игрок" вместо "игрок 1 красный".
ответ
~8gabriel8:
Есть в категории Игрок действие на смену цвета. Делаешь события, что игрок вводит в чат -color для всех игроков, куда добавляешь это действие.

23

» Администрация XGM / как получить уровень 1

Похожие вопросы:

ответ
Значит 3 раза понижали. Опыт может снятся только в одном из этих случаев:
  • ресурс снят с публикации который ранее был опубликован
  • проект снижен в уровне, который ранее был большего уровня
  • удален опубликованный комментарий / пост на форуме
  • ты написал сообщение в оффтопку на форуме (за каждый пост -1 опыта)
  • ну и самый редкий вариант ,если какой то модератор пользуюсь служебным положением заабузит админку и начислит н-ое кол-во опыта определенному юзера, мы это спалим и снимем опыт назад.
ответ
любой абуз видно в логах. Там ничего не абузилось.

23

» Администрация XGM / как получить мне уровень в этом сайте

Похожие вопросы:

ответ
Значит 3 раза понижали. Опыт может снятся только в одном из этих случаев:
  • ресурс снят с публикации который ранее был опубликован
  • проект снижен в уровне, который ранее был большего уровня
  • удален опубликованный комментарий / пост на форуме
  • ты написал сообщение в оффтопку на форуме (за каждый пост -1 опыта)
  • ну и самый редкий вариант ,если какой то модератор пользуюсь служебным положением заабузит админку и начислит н-ое кол-во опыта определенному юзера, мы это спалим и снимем опыт назад.

23

» WarCraft 3 / Собственные характеристики для героя

Похожие вопросы:

ответ
Уровень = Уровню героя. Характеристики = Характеристикам героя. Цикл 6-разовый на каждый слот дающий предмет герою. Уровни способностей равные уровню способностей героя. Героя, в смысле твоего героя. Ну еще создать юнита типа твоего героя. Что-то еще? Если он где-то в переменных для пассивок, то с ними тоже по колдовать и все.
Будет только одна проблема, если ты книги атаки на его юзал то их никак не засеч без геморроя. А так все в виде целочисленных на твоем герое записано.

23

» WarCraft 3 / Не удаляется способность

Похожие вопросы:

ответ
Nickol, оригиналы удалить нельзя
они хранятся не в карте в mpq
если так хочешь то удаляй оригинал из слк таблицы в архивах игры
ответ
на сколько я понял проблема в том что после смерти способность не удаляется
тогда нужен триггер с событием юнит умирает
и если юнит герой то удалять эту способность
Melissa:
Ну и если вдруг скилл используют одновременно или почти одновременно десятки юнитов - то не у всех панцирь будет корректно удаляться.
можно решить локалками
ответ
Ну хз, ручками удали скилл слк или тхт, хз как там у тебя, после деоптимизации карты (снятия защиты) часто бывают баги с обьектными данными, попробуйте другой деоптимизатор, или правьте ручками...
ответ
Делай call UnitMakeAbilityPermanent(u, true,'A000') ) .
Где вместо A000 твоя абилка.
Если абила спеллбучная, то все спеллбуки тоже надо вживлять.
Перманент-абилы не пропадают после морфа и анморфа. Просто добавленные - пропадают.
ответ
А ты её так не удалишь, нужно саму книжку удалять

23

» WarCraft 3 / Помогите разобраться с опытом

Похожие вопросы:

ответ
Ну что пацаны Datamanager ?
Дам подсказку, смотреть на систему ливов и сыгранный игр, там переменная сама инкрементируется за каждый запуск игры, и сама подгружается, но надо включить локальные файлы и сделать привязку к нику и зашифровать данные, ибо иначе тут всё в открытом виде, можно сбрасывать значение

23

» WarCraft 3 / Утекает ли область?

Похожие вопросы:

ответ
Утечка - это когда не удаляются ненужные объекты. Здесь регион нельзя удалять, потому что без него событие не будет работать. Но если у вас много таких событий, то лучше использовать один регион для всех событий, при условии, что размеры региона не будут изменяться в процессе игры, потому что это может нарушить работу других событий, привязанных к данному региону.
А функция TriggerRegisterEnterRectSimple в теории не утечна, но на практике может утекать, например, если в потоке триггера будет вызвано её уничтожение RemoveRegion(GetTriggeringRegion()).

23

» WarCraft 3 / Дуэль

Похожие вопросы:

ответ
научись правильно выражать свои мысли
наработки тут не кидают (это раздел вопросы а наработки)
если я правильно понял то тебе надо сделать следующее:
  1. составить список играющих игроков
  2. каждые n секунд брать из этого списка 2 случайных игрока и тпшить их героев на арену
  3. после смерти 1 из этих героев тпшить обоих на базу (т.к. проигравший мёртв то тпшнится только победитель)
теперь пройдёмся подробно по пунктам
  1. массив игроков и переменная count типа целочисленная равная 0 изначально
перебираем всех игроков от 0 до 11
если игрок играет то заносим его в массив под индексом count
увеличиваем значение count на 1
  1. триггер с событием/таймер каждые n секунд
в действиях берём случайное число от 0 до count
это индекс первого игрока на дуэли
потом снова случайное число от 0 до count
если оно совпадает с предыдущим числом то снова случайное число от 0 до count
и так до тех пор пока новое число не будет отличаться от первого (делается циклом)
потом используем полученные 2 числа как индексы к массиву игроков и тпшим их героев на арену
  1. как только герой умирает проверяем является ли владелец умершего героя одним из выбранных игроков
потом тпшим обоих героев на базу и выдаём чтото наподобие "игрок выживший_игрок победил"
подробнее в статьях
разделы 1 и 2
ответ
Поищи открытые карты с дуэлями. Можно например взять жизнь на арене 1.5 она открытая.
ответ
~8gabriel8:
В этом действии Отряд - Pick every unit in (Random 1 units from (Units in Game Area <gen> owned by Player_Hero[Random_Duel])) and do (Actions) где задаётся Random_Duel? Оно как было при инициализации задано, так и не меняется. То есть сначала выбираешь в общей области сражений юнита игрока и перемещаешь его в дуэльную область, а через 2 секунды опять пытаешься выбрать в общей области сражений юнита этого игрока, которого уже там нет, он в дуэльной. Это только то, что бросилось в глаза в самом триггере, в игре не проверял.
ответ
Удалить у юнита бафф через функцию UnitRemoveAbility( unit, buffID ).

23

» WarCraft 3 / Проигрывание звука

Похожие вопросы:

ответ
Тагда попробуй триггерно сделать при возрождении грома проигрывание этого звука.
ответ
Любой звук (и вообще любые материалы) из архивов варкрафта можно использовать в игре без импорта.
ответ
если ты используешь звук 1 раз то да, а если нет то заносим звук в глобальную переменную и проигрываем когда нужно.
В гуях вроде со звуками все было ровно, ничего изобретать ненужно...
ответ
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
ответ
Спасибо всем, отбой, все нормально с позиционными звуками, у меня была включена кинематика и оказывается она игнорирует позиционные звуки... извините за беспокойство, на счет звука на точке не знаю, но на юните работает как надо.

23

» WarCraft 3 / Lua или jass?

Похожие вопросы:

ответ
правда в идеале хотелось бы иметь хот редеплой.
Имеется в виду в самой игре или что?
и по-хорошему, чтобы не затирались скрипты после пересохранения карты в предакторе
Для этого придется сначала вытаскивать скрипт из оригинальной карты, затем собирать твои скрипты + этот в один и пихать обратно. Это не сильно сложно.
setlocal EnableDelayedExpansion

if exist pid.txt (
    set /P pid=<pid.txt
    echo !pid!
    taskkill /F /PID !pid!
)

set map=output\map.w3x

mkdir output
xcopy ..\test_stuff_map.w3x %map%* /Y

"tools\MPQEditor.exe" add "%map%" "war3map.lua" "war3map.lua"
"tools\MPQEditor.exe" add "%map%" "testdialog.fdf" "TestDialog.fdf"
"tools\MPQEditor.exe" add "%map%" "ui_list.toc" "ui_list.toc"

set game=E:\games\Warcraft III Public Test\x86_64\Warcraft III.exe

start "" "%game%" -loadfile "%~dp0%map%" -windowmode windowedfullscreen %arguments%

for /F "TOKENS=2,3,*" %%a in ('tasklist /FI "IMAGENAME eq Warcraft III.exe"') do set MyPID=%%b
echo %MyPID% > pid.txt
Мой скрипт. Большая часть кода здесь отвечает за автоматический перезапуск игры.
ответ
например как быть с ситуацией когда this или объект используется как число?
this часто используется как число, например для сохранения на хэндл таймера.

ИМХО, структуры вообще лучше переписать изначально на lua.
ответ
Если убрать из карты блоки кода, все триггеры с "custom code" и очистить "custom code" карты то сменить можно.

23

» WarCraft 3 / Как сделать кастомную озвучку

Похожие вопросы:

ответ
"Набор звуков" нельзя сделать через триггеры, но можно попробовать через импорт файлов заменить стандартные файлы в уже существующих наборах.
Для этого импортируемому файлу надо прописать путь заменяемого.

23

» WarCraft 3 / Кампания

Похожие вопросы:

ответ
Нельзя. Потому что даже в твоей сугубо триггерной карте, когда запускается команда на исполнение все конвертируется в jass/( Когда ты играешь или проверяешь карту)
Триггер . лишь графическая оболочка, как бы кубики на которых написаны буквы, но все-равно все происходит на jasse ( уже иногда на lua)
Короче нельзя. скачивай jngp и учи хотя бы простые джассовые команды.
Хотя даже зная его взломанная карта часто выкладывает огромный набор проограмного кода без разделения где конкретный текстовый триггер инициализации или определенного дейсвтия.
ответ
~8gabriel8:
Нет. Кампании пока не рассчитаны на сетевую игру, переходы с карты на карту работать не будут. Преодолевать ограничение в количестве декораций можно было в редакторе JNGP, но он рассчитан на патч 1.26, а также может работать с 1.27, на новые патчи не знаю, что позволяет ставить больше декораций.


По идее и кэш в сетевой не будет работать, так как у одного игрока могут быть в кэше одни данные, а у другого другие. Но тут не проверял, а лишь предполагаю, так как специализируюсь на кампаниях, а не сетевых играх)
ответ
Можно создать обычную карту/карты для прохождения по сети.
Для этого
  • Чтобы сохранить прогресс прохождения игрока - нужно уметь загружать и подгружать его из файла.
  • Чтобы организовать переход между локациями, вы можете:
    • Использовать несколько согласованных карт;
    • Использовать метод разделения карты на области;
    • Использовать методы генерации карт.

23

» WarCraft 3 / Помогите найти утечку

Похожие вопросы:

ответ
Попробуй call DestroyGroup(udg_UNOSITMENIA) выбор юнитов тоже создаёт утечки.
ответ
nvc123, внутри GetRectCenter нет утечки
// blizzard.j:1772
function GetRectCenter takes rect whichRect returns location
    return Location(GetRectCenterX(whichRect), GetRectCenterY(whichRect))
endfunction
а эвент регистрируется 1 раз, так что можно забить
// blizzard.j:7959
function TriggerRegisterEnterRectSimple takes trigger trig, rect r returns event
    local region rectRegion = CreateRegion()
    call RegionAddRect(rectRegion, r)
    return TriggerRegisterEnterRegion(trig, rectRegion, null)
endfunction
Другое дело, что у order есть утечка, но это нативно, она минимальная и это никак не исправляется.

23

» WarCraft 3 / Магическая атака

Похожие вопросы:

ответ
Rivensing, наверно чтоб от способностей уворачиваться, надо то же самое сделать, только со способностью "Невосприимчивость к магии". Только её надо не со 100% вероятность давать. Потому что она блокирует магию всегда в отличии от "Змеиной ловкости".
ответ
Можно через улучшения сделать безвозвратно или через способность "Темный". В остальных случаях только морф.
ответ
Не слушай этих плз. В игровых константах поройся
ответ
Дать юниту дальнего боя способность "Грозовая атака", у которой в "Эффекты молнии" установить "Магический огонь".
"Вытащить эффект молнии" даст текстуру вроде бы, а анимация снаряда делается моделью.
ответ
Так как ты это хочешь - нет, но можно добавить много типов атаки, если ты узнаешь про структуры

23

» WarCraft 3 / Помощь с моделью

Похожие вопросы:

ответ
Askarto:
Grok:
Импортируй модели в карту, удали везде "war3mapImported\" и будет тебе счастье
Везде это и в блп и в мдх?
Действительно есть подробные статьи про импорт, мог бы почитать, но раз ты все же завел тему:
Модели (.mdx/.mdl) используют текстуры. Нестандартные модели часто используют текстуры, которых нет в стандартном варе и они идут (как правило) вместе с моделью. Соответственно, при импорте, необходимо указать путь текстуры такой же, какой ищет модель.
Чтобы узнать, как путь тектуры нужен, можно использовать прогу MDXPather (тогда ты его еще и изменить сможешь на желаемый) или просто открыть модель блокнотом (да, так можно). Пути текстур ты найдешь в первых 5-10 строках.
Для верности, копируешь их ЦЕЛИКОМ и заменяешь ЦЕЛИКОМ поле вида 'war3imported/x.blp'. В некоторых случаях перезапускаешь WorldEditor. У меня и без перезапуска они начинают работать.
У моделей 'war3imported' можно не удалять, хотя бывают и исключения.
ответ
Ой, всё
ответ
Собственно что мешает написать в тему нужна модель вам туда-сюда?
WarSC:
Создать анимацию(толковую) без знаний 3ДМакса практически невозможно, а тот кто прошареный в таких программах тебе помогать не будет...
Анимки уже давно все в майке делают) Ну так для справки.
ответ
Скачай простенькую программу MdxPather , узнаешь какие текстуры нужны для модели и какие у них название, также можешь их переназвать.
ответ
Замени на тот что есть у тебя

23

» WarCraft 3 / как открыть карту ?

Похожие вопросы:

ответ
Способ есть.
Но для этого нужен Warcraft 3 и редактор.
Итого:
  • открываешь редактор,
  • открываешь в нем карту
  • клацаем F9 или просто Проверку карты (там иконка самая последняя в строчке, красная галочка)
  • Profit...
Внимание! Не все карты так можно открыть, некоторые защищенные и открытию в редакторе не подлежат, а если их восстановить, то они не всегда работоспособны.
ответ
ты бы названий таких не делал, а то модератор впаяет условку
для открытия обычных карт понадобится стандартный World Editor, идущий в комплекте с игрой
карты кампании нужно искать в архивах *.mpq, которые находятся в директории игры, в одной папке с приложением war3.exe, и для их открытия понадобятся программы наподобие Win mpq или War3ModelEditor со встроенным Mpq Browser
ответ
Можно, War#mapResorer в помощь, вот ссылочка
А что именно интересует, я кое какие скиллы выкладывал, у фрога там черт ногу сломит, какие то недогуи, всякие старые скиллы которые не удалены, ужос, карта открывается в редакторе по 5 мин.